From 39a1d279600a46fa6539b669fd1f4d25328f0e40 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 7 Dec 2019 10:34:17 -0500 Subject: [PATCH] window: Inspector cleanups Reduce the use of the inspector_window static. The goal is to have one inspector window per display, so we need to get rid of the static. --- gtk/gtkwindow.c | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 4e20a7733c..0911c39285 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -8999,18 +8999,29 @@ warn_response (GtkDialog *dialog, } static void -gtk_window_set_debugging (gboolean enable, - gboolean select, - gboolean warn) +gtk_window_set_debugging (GdkDisplay *display, + gboolean enable, + gboolean toggle, + gboolean select, + gboolean warn) { GtkWidget *dialog = NULL; GtkWidget *area; GtkWidget *check; - if (inspector_window == NULL) + if (toggle) + { + gboolean was_debugging; + + was_debugging = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (display), "-gtk-debugging-enabled")); + enable = !was_debugging; + } + + g_object_set_data (G_OBJECT (display), "-gtk-debugging-enabled", GINT_TO_POINTER (enable)); + + if (enable && inspector_window == NULL) { inspector_window = gtk_inspector_window_new (); - gtk_window_set_hide_on_close (GTK_WINDOW (inspector_window), TRUE); if (warn) { @@ -9052,7 +9063,8 @@ gtk_window_set_debugging (gboolean enable, { if (dialog) gtk_widget_hide (dialog); - gtk_widget_hide (inspector_window); + if (inspector_window) + gtk_widget_hide (inspector_window); } } @@ -9067,7 +9079,9 @@ gtk_window_set_debugging (gboolean enable, void gtk_window_set_interactive_debugging (gboolean enable) { - gtk_window_set_debugging (enable, FALSE, FALSE); + GdkDisplay *display = gdk_display_get_default (); + + gtk_window_set_debugging (display, enable, FALSE, FALSE, FALSE); } static gboolean @@ -9119,21 +9133,13 @@ static gboolean gtk_window_enable_debugging (GtkWindow *window, gboolean toggle) { + GtkWindowPrivate *priv = gtk_window_get_instance_private (window); gboolean warn; if (!inspector_keybinding_enabled (&warn)) return FALSE; - if (toggle) - { - if (GTK_IS_WIDGET (inspector_window) && - gtk_widget_is_visible (inspector_window)) - gtk_window_set_debugging (FALSE, FALSE, FALSE); - else - gtk_window_set_debugging (TRUE, FALSE, warn); - } - else - gtk_window_set_debugging (TRUE, TRUE, warn); + gtk_window_set_debugging (priv->display, TRUE, toggle, !toggle, warn); return TRUE; } -- 2.30.2